প্যাসক্যাল ভাষায় অ্যানিমেশন এবং শেপ ম্যানিপুলেশন সাধারণত গ্রাফিক্সের মাধ্যমে করা হয়। এর জন্য প্যাসক্যালের CRT লাইব্রেরি এবং Graph লাইব্রেরি ব্যবহৃত হয়, যা গ্রাফিক্যাল ইন্টারফেস তৈরি এবং অ্যানিমেশন তৈরি করতে সাহায্য করে।
CRT লাইব্রেরি: এই লাইব্রেরি টেক্সট বেসড ইন্টারফেসের জন্য ব্যবহৃত হয়, যেখানে স্ক্রীনের উপর টেক্সট এবং অক্ষরের অবস্থান পরিবর্তন করা যায়।
Graph লাইব্রেরি: গ্রাফিক্যাল ইন্টারফেস তৈরি এবং গ্রাফিক্যাল উপাদান (যেমন রেখা, বৃত্ত, আয়তক্ষেত্র, ইত্যাদি) অঙ্কন করতে ব্যবহৃত হয়। গ্রাফিক্সের সাথে অ্যানিমেশন এবং শেপ ম্যানিপুলেশন করতে এই লাইব্রেরি গুরুত্বপূর্ণ।
প্যাসক্যালের গ্রাফিক্স লাইব্রেরি সেটআপ
গ্রাফিক্স ব্যবহার করতে প্যাসক্যালের Graph লাইব্রেরি ব্যবহৃত হয়। এটি ব্যবহার করতে হলে প্রথমে গ্রাফিক্স ড্রাইভার এবং মোড সেট করতে হয়।
গ্রাফিক্স ইন্সটলেশন এবং সেটআপ:
uses Graph;
var
gd, gm: Integer;
begin
gd := Detect; // গ্রাফিক্স ড্রাইভার স্বয়ংক্রিয়ভাবে নির্ধারণ করা হবে
InitGraph(gd, gm, ''); // গ্রাফিক্স মোড শুরু করা
if GraphResult <> grOk then
begin
writeln('Graphics initialization failed');
halt(1);
end;
// গ্রাফিক্স কোড এখানে
CloseGraph; // গ্রাফিক্স বন্ধ করা
end.এখানে Detect এবং InitGraph ফাংশন ব্যবহার করে গ্রাফিক্স মোড শুরু করা হয়।
অ্যানিমেশন তৈরি করা
অ্যানিমেশন সাধারণত একাধিক ছবির মাধ্যমে একটি চরিত্র বা বস্তু মুভ করতে সহায়তা করে। প্যাসক্যালের গ্রাফিক্স লাইব্রেরি ব্যবহার করে অ্যানিমেশন তৈরি করা যেতে পারে।
উদাহরণ: চলন্ত বৃত্ত অ্যানিমেশন
uses Graph, Crt;
var
gd, gm: Integer;
x, y, dx, dy: Integer;
radius: Integer;
begin
gd := Detect;
InitGraph(gd, gm, '');
if GraphResult <> grOk then
begin
writeln('Graphics initialization failed');
halt(1);
end;
x := 100; // বৃত্তের প্রাথমিক x অবস্থান
y := 100; // বৃত্তের প্রাথমিক y অবস্থান
dx := 5; // প্রতি সাইকেলে x পরিবর্তন
dy := 3; // প্রতি সাইকেলে y পরিবর্তন
radius := 20; // বৃত্তের আকার
repeat
ClearDevice; // স্ক্রীন পরিষ্কার
// বৃত্ত অঙ্কন
SetColor(White);
Circle(x, y, radius);
// বৃত্তের নতুন অবস্থান নির্ধারণ
x := x + dx;
y := y + dy;
// বৃত্তের অবস্থান প্রান্তে পৌঁছালে প্রতিফলন পরিবর্তন
if (x >= GetMaxX) or (x <= 0) then
dx := -dx;
if (y >= GetMaxY) or (y <= 0) then
dy := -dy;
Delay(10); // অ্যানিমেশন বিলম্ব
until KeyPressed; // কিবোর্ড চাপা না হলে চলতে থাকবে
CloseGraph;
end.এখানে একটি বৃত্ত বিভিন্ন দিকে মুভ করতে থাকে এবং যখন এটি স্ক্রীনের প্রান্তে পৌঁছে, তখন এর দিক পরিবর্তন হয়। ClearDevice ফাংশনটি স্ক্রীন পরিষ্কার করতে ব্যবহৃত হয় এবং Delay ফাংশনটি অ্যানিমেশনকে ধীর করে।
শেপ ম্যানিপুলেশন
শেপ ম্যানিপুলেশন দ্বারা আমরা গ্রাফিক্যাল শেপগুলিকে স্ক্রীনে আঁকতে, সেগুলোর আকার, রঙ বা অবস্থান পরিবর্তন করতে পারি। প্যাসক্যালের Graph লাইব্রেরি-তে বিভিন্ন ধরনের শেপ আঁকা এবং তাদের ম্যানিপুলেশন করা যায়, যেমন রেখা, বৃত্ত, আয়তক্ষেত্র, ইত্যাদি।
উদাহরণ: আয়তক্ষেত্রের আকার পরিবর্তন
uses Graph;
var
gd, gm: Integer;
x1, y1, x2, y2: Integer;
begin
gd := Detect;
InitGraph(gd, gm, '');
if GraphResult <> grOk then
begin
writeln('Graphics initialization failed');
halt(1);
end;
x1 := 100; // আয়তক্ষেত্রের শুরু বিন্দু
y1 := 100;
x2 := 300; // আয়তক্ষেত্রের শেষ বিন্দু
y2 := 200;
// আয়তক্ষেত্র আঁকুন
SetColor(Yellow);
Rectangle(x1, y1, x2, y2);
// আয়তক্ষেত্রের আকার পরিবর্তন
x2 := x2 + 50; // আয়তক্ষেত্রের প্রস্থ বৃদ্ধি
y2 := y2 + 50; // আয়তক্ষেত্রের উচ্চতা বৃদ্ধি
// নতুন আয়তক্ষেত্র আঁকুন
SetColor(Red);
Rectangle(x1, y1, x2, y2);
Readln;
CloseGraph;
end.এখানে, আমরা প্রথমে একটি আয়তক্ষেত্র আঁকি এবং পরে তার আকার বাড়িয়ে নতুন আয়তক্ষেত্র আঁকি। SetColor ফাংশনটি শেপের রঙ সেট করে।
সারাংশ
- অ্যানিমেশন: প্যাসক্যালের
Graphলাইব্রেরি ব্যবহার করে বিভিন্ন ধরনের অ্যানিমেশন তৈরি করা সম্ভব। বস্তুর চলাচল বা গতিশীলতা প্রদর্শন করার জন্য একাধিক ফ্রেম ব্যবহার করা হয়। - শেপ ম্যানিপুলেশন: প্যাসক্যাল গ্রাফিক্স লাইব্রেরির মাধ্যমে বিভিন্ন গ্রাফিক্যাল শেপ যেমন রেখা, বৃত্ত, আয়তক্ষেত্র আঁকতে এবং সেগুলোর আকার বা অবস্থান পরিবর্তন করতে পারি।
- গ্রাফিক্সের জন্য প্রাথমিক সেটআপ: গ্রাফিক্স ব্যবহারের জন্য
InitGraph,ClearDevice,CloseGraph, এবংDelayফাংশন ব্যবহার করা হয়।
এই ধারণাগুলি ব্যবহার করে প্যাসক্যাল ভাষায় আপনি গ্রাফিক্যাল অ্যানিমেশন এবং শেপ ম্যানিপুলেশন তৈরি করতে পারবেন।
Read more